import axios from 'axios';
import router from '../router';
axios.defaults.timeout = 5000; // 超时时间是 5 秒
axios.defaults.withCredentials = true // 允许跨域
// Content-Type 响应头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 基础 url
axios.defaults.baseURL = "http://localhost:8888";

// 响应拦截器
axios.interceptors.response.use (
  response => {
    // 如果 response 的 status 是 200，说明访问到了接口，否则错误
    if( response.status == 200 ){
      return Promise.resolve(response); // 异步请求
    } else {
      return Promise.reject(response);
    }
  },
  error => {
    if( error.response.status ){
      switch( error.response.status ){
        case 401:       // 未登录
          router.replace({
            path: '/',
            query: {
              redirect: router.currentRoute.fullPath // 当前的路由信息对象
            }
          });
          break;
        case 404:       // 没找到
          break;
      }
      return Promise.reject( error.response ); 
    }
  }
);

// 封装 get 方法
export function get(url,params={}) {
  return new Promise((resolve,reject) => {
    axios.get(url,{params:params})
    .then(response => {
      resolve(response.data);
    })
    .catch(err => {
      reject(err);
    })
  });
}

// 封装 post 方法
export function post(url,data={}) {
  return new Promise((resolve,reject) => {
    axios.post(url,data)
    .then(response => {
      resolve(response.data);
    })
    .catch(err => {
      reject(err);
    })
  });
}